/*
 * Title: 安迪的第一个字典（Andy’s First Dictionary）
 * Author: Yuanshun L
 * Created : 09-otc-2021
 */

#include<iostream>
#include<set>
#include<string>
#include<sstream>
#include<cstdio>
using namespace std;

void to_lower(string &s){
    for(int i=0;i<s.length();i++){
        s[i] = tolower(s[i]);
    }
}

int main() {
    freopen("data.in","r",stdin);
    freopen("data.out","w",stdout);

    string s,buf;
    set<string> dict;
    while(cin>>s){
        // 将字符串中所有的非字母字符转换给空白
        for(int i=0;i<s.length();i++){
            if(!(s[i]>='A' && s[i]<'Z' || s[i]>='a' && s[i]<='z')){
                s[i] = ' ';
            }
        }
        // 替换成空白之后，也许会分割成多个单词
        stringstream ss(s); // 字符串作为数据流
        while(ss>>buf){
            to_lower(buf);
            dict.insert(buf);
        }
    }

    // 输出字典
    for(set<string>::iterator it=dict.begin();it!=dict.end();it++){
        cout<<*it<<endl;
    }


    return 0;
}